M = {}

local COLORS_CUAD = {
{ 255, 105, 180 }, { 255, 69, 0 }, { 0, 199, 140 }, { 255, 193, 37 },
{ 30, 144, 255 },{ 255, 130, 71 }
}

M.colors = COLORS_CUAD

local TYPES_CUAD = { { 1, 2 }, { 2, 3 },{ 3, 4 }, { 4, 1 }, { 5, 6 }, { 6, 1 } }

M.types = TYPES_CUAD



local newCuadrado = function(x, y, type, status)  
    local cuadrado = display.newRect(x * 64 + 20, y * 64, 60, 60)
    cuadrado.status = status
    cuadrado.type = type
    cuadrado:setFillColor(COLORS_CUAD[TYPES_CUAD[cuadrado.type][cuadrado.status]][1], COLORS_CUAD[TYPES_CUAD[cuadrado.type][cuadrado.status]][2], COLORS_CUAD[TYPES_CUAD[cuadrado.type][cuadrado.status]][3])
    
    function doTouch(self, event)
        
        if event.phase == "began" then
            print("began phase")
            
            if (self.status == 2) then self.status = 1
                
            else self.status = self.status + 1
            end
            print("status:" .. self.status)
            print("type:" .. self.type)
            print("color" .. TYPES_CUAD[self.type][self.status])
            
            self:setFillColor(COLORS_CUAD[TYPES_CUAD[self.type][self.status]][1], COLORS_CUAD[TYPES_CUAD[self.type][self.status]][2], COLORS_CUAD[TYPES_CUAD[self.type][self.status]][3])
        elseif event.phase == "ended" or event.phase == "cancelled" then
            print("end phase")
        end
    end
    
    cuadrado.touch = doTouch
    cuadrado:addEventListener("touch", cuadrado)
    
    local color = function()
        return TYPES_CUAD[cuadrado.type][cuadrado.status]
    end
    
    cuadrado.color = color
    
    local flip = function()
        if (cuadrado.status == 2) 
            then cuadrado.status = 1
            
        else 
            cuadrado.status = cuadrado.status + 1
        end
        
        
        cuadrado:setFillColor(COLORS_CUAD[TYPES_CUAD[cuadrado.type][cuadrado.status]][1], COLORS_CUAD[TYPES_CUAD[cuadrado.type][cuadrado.status]][2], COLORS_CUAD[TYPES_CUAD[cuadrado.type][cuadrado.status]][3])
    end
    
    cuadrado.flip = flip
    
    local colorS = function(status)
        return TYPES_CUAD[cuadrado.type][status]
    end
    
    cuadrado.colorS = colorS
    
    local contains = function(color)
        
        for j = 1, #TYPES_CUAD[type] do
            if (TYPES_CUAD[cuadrado.type][j] == color) then 
                return true 
            end
        end
    end
    
    cuadrado.contains = contains
    
    
    return cuadrado
end

M.newCuadrado = newCuadrado



return M
